﻿using System;
using System.Drawing;
using System.Windows.Forms;
using SomaiNordeste.FabricaRacao.DomainModel.Repository;
using SomaiNordeste.FabricaRacao.DomainModel;
using System.Data;
using System.Collections.Generic;

namespace SomaiNordeste.FabricaRacao.Presentation
{
	
	public partial class frmBatidaCadastro : Form
	{
        private BatidaRepository _batidaRepository;
        private List<Batida> _batidas = new List<Batida>();

		public frmBatidaCadastro()
		{
			InitializeComponent();
            _batidaRepository = new BatidaRepository();
		}

        private void frmBatidaCadastro_Load(object sender, EventArgs e)
        {
            this.date.Focus();
        }
        
        private void cmbRacao_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbRacao.SelectedIndex > 0)
            {
                Batida batida = new Batida() { Descricao = cmbRacao.Items[cmbRacao.SelectedIndex].ToString() };
                grdRacao.DataSource = _batidaRepository.GetLastBeat(batida, date.Value).DefaultView;
                lblRacaoCadastro.Text = cmbRacao.Text;
                grdRacao.BatidaFormataGridView();
            }
            else
            {
                lblRacaoCadastro.Text = "Escolha Ração";
            }
        }

        private void date_ValueChanged(object sender, EventArgs e)
        {
            if (cmbRacao.SelectedIndex > 0)
            {
                Batida batida = new Batida() { Descricao = cmbRacao.Items[cmbRacao.SelectedIndex].ToString() };
                grdRacao.DataSource = _batidaRepository.GetLastBeat(batida, date.Value).DefaultView;
                lblRacaoCadastro.Text = cmbRacao.Text;
                grdRacao.BatidaFormataGridView();
            }
            else
            {
                lblRacaoCadastro.Text = "Escolha Ração";
            }
        }

        private void btnBatida_Click(object sender, EventArgs e)
        {
            try
            {
                Batida batida = new Batida();
                batida.Date = date.Value.AddMilliseconds(DateTime.Now.Millisecond);
                batida.Descricao = cmbRacao.Text;
                batida.Tipo = "192";
                batida.Linhagem = "192";
                batida.Versao = "192";

                batida.BatidaN = Convert.ToInt32(txtBatida.Text);
                batida.KG_Total = Convert.ToDouble(txtPeso.Text);
                batida.Batida_Diaria = 1 + Convert.ToInt32(ConverteBatidaDiaria(grdRacao.Rows[0].Cells[3].Value));

                _batidas.Add(batida);

                _batidaRepository.Add(batida);
                MessageBox.Show("Batida salva com sucesso!", "Atenção");


                grdRacao.DataSource = _batidaRepository.GetLastBeat(batida, date.Value).DefaultView;
                grdRacao.BatidaFormataGridView();

                grdRacoesManuais.DataSource = _batidas.AdicionaInsumos();
                grdRacoesManuais.RacaoManuaisFormataGridView();

                LimparCampos();

            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro: " + ex.Message, "Atenção");
            }
        }

        private void btnCadInsumos_Click(object sender, EventArgs e)
        {
            frmInsumosCadastro frmInsumoCadastro = new frmInsumosCadastro(_batidas);
            frmInsumoCadastro.ShowDialog();

            _batidas = new List<Batida>();
            LimpaGrids();
        }

        private void LimpaGrids()
        {
            grdRacoesManuais.DataSource = null;
            grdRacao.DataSource = null;
        }

        private int ConverteBatidaDiaria(object obj)
        {
            if (obj != null)
                return int.Parse(obj.ToString());

             //procurar se existe batida_diaria_no_dia
             // se não existir cadastrar uma e assim sucessivamente...   
            return 0;
        }

        private void LimparCampos()
        {
            txtBatida.Clear();
            txtPeso.Clear();
        }
        
        private void CarregaBadidasDoDia(DateTime date)
        {
            cmbRacao.DataSource = _batidaRepository.FindBy(date);
            cmbRacao.DisplayMember = "Descricao";
        }
        
        #region BackGround formulario
        
        private void date_Enter(object sender, EventArgs e)
        {

        }

        private void date_Leave(object sender, EventArgs e)
        {

        }

        private void cmbRacao_Enter(object sender, EventArgs e)
        {
            cmbRacao.BackColor = Color.Yellow;
        }

        private void cmbRacao_Leave(object sender, EventArgs e)
        {
            cmbRacao.BackColor = Color.White;
        }

        private void txtPeso_Enter(object sender, EventArgs e)
        {
            txtPeso.BackColor = Color.Yellow;
        }

        private void txtPeso_Leave(object sender, EventArgs e)
        {
            txtPeso.BackColor = Color.White;
        }

        private void txtBatida_Enter(object sender, EventArgs e)
        {
            txtBatida.BackColor = Color.Yellow;
        }

        private void txtBatida_Leave(object sender, EventArgs e)
        {
            txtBatida.BackColor = Color.White;
        }

        #endregion

    }
}
